The invention disclosed herein relates generally to methods for managing resources within a computer system. More particularly, the present invention relates to a system and method for managing resources within a computer system having multiple partitions.
Through logical partitioning, a physical computer system may be divided into two or more logical partitions (xe2x80x9cLPARsxe2x80x9d), each of which has a share of the physical system""s resources and operates as an independent logical computer system within the physical system, having also, for example, its own operating system, user applications, data files, primary language, time of day, etc.
The share of resources allocated to a partition affects the performance of the logical system within that partition, and a lack of one or more resources, such as processor power or memory, may result in performance degradation. Also, since work loads, and consequently, resource needs, may change over time, one defined allocation of resources may not be effective for all situations. Thus, it is advantageous to be able to reallocate resources among partitions to address changes in work loads.
Currently available partitionable systems, such as the AS/400(trademark) systems running the OS/400(trademark) operating system, both from International Business Machines Corporation, support the dynamic reallocation of resources among partitions, e.g., without having to perform an initial program load (xe2x80x9cIPLxe2x80x9d) afterwards, but do not provide sophisticated tools to execute such reallocations. Generally, dynamic reallocation of resources is performed either at the discretion of a human operator or automatically according to a schedule, e.g., automatically executing a preset resource reallocation based on assumed needs at predetermined times. The first technique is deficient in that it requires a human operator and is time consuming. The second technique, although not requiring an operator after the preset resource reallocations have been defined, has the drawback of reallocating resources based on assumed needs and not on current actual needs of the partitions.
Thus, there is a need for a system and method that automatically determines when partitions suffer performance degradation due to a lack of resources, and dynamically reallocates resources among the partitions to alleviate the identified performance degradation.
It is an object of the present invention to provide a system and method that dynamically reallocates resources among partitions in a way that avoids the drawbacks described above.
It is another object of the present invention to provide a system and method that automatically determines when partitions suffer performance degradation due to a lack of resources and provides an indication of the level of need for resources.
It is another object of the present invention to provide a system and method that automatically and dynamically reallocates resources among partitions according to an indicated need for resources.
The above and other objects are achieved by a system and method for automatically reallocating resources (xe2x80x9ctuningxe2x80x9d) among partitions based on factors including need for resources (e.g., as indicated by resource pain rates) and user assigned priority. The system includes a tuner, a storage, and partition interfaces for one or more partitions to be tuned. The partition interfaces continually obtain and store in the storage data from the partitions to be tuned regarding their performance with regard to resources, including memory, processor power, and interactive power. The tuner executes several tasks, including a validity table creation task, a memory tuning task, and a processor power and interactive power (xe2x80x9cP/Ixe2x80x9d) tuning task.
In the validity table creation task, for each allocatable amount of processor power, the tuner determines the minimum and maximum amounts of interactive power, if any, that can be validly allocated in combination with the respective allocatable amount of processor power. Then, for each allocatable amount of processor power for which can be determined both minimum and maximum amounts of interactive power that can be validly allocated in combination with the respective allocatable amount of processor power, the tuner adds an entry in a table, the entry including the respective allocatable amount of processor power and the minimum and maximum amounts of interactive power determined for the respective allocatable amount of processor power.
In the validity table creation task, the tuner creates a validity table useful for the P/I tuning task or which may be used by itself to allow someone, e.g., a system administrator, to manually tune processor power and interactive power across partitions. The validity table created through the validity table creation task shows, for a given system configuration, the amounts of processor power and interactive power that may be validly allocated in combination to a partition. The tuner executes the validity tables creation task to create a validity table at the time the tuner first starts or whenever the system configuration of processor and/or interactive resources have changed.
The memory tuning task may involve a method for managing the memory of a computer system including storage devices, computer processor power, and a plurality of partitions, where the memory, storage devices, and computer processor power of the computer system are distributively assigned among the plurality of partitions, and where the computer system uses the storage devices assigned to each partition to supplement the memory assigned to the respective partition. This method involves, for each of two or more partitions of the plurality of partitions, providing a first measurement related to the frequency with which storage devices assigned to the respective partition are used to supplement memory in the respective partition. Then, a second measurement is provided that is related to the efficiency with which the storage devices assigned to the respective partition supplement memory in the respective partition. Then, a third measurement is provided that is related to the rate at which the computer processor power assigned to the respective partition is used. Next, a memory pain value is calculated representing the degree to which computing performance in the respective partition is being degraded due to a lack of memory, the memory pain value being directly related to the first measurement and indirectly related to the second and third measurements. Finally, the first value is stored.
The memory tuning task may also involve a second method for managing the memory of a computer system having a plurality of partitions, where the memory of the computer system is distributively assigned among the plurality of partitions. This method involves obtaining, for each of two or more partitions of the plurality of partitions, a value that describes the degree to which computing performance in the respective partition is being degraded due to a lack of memory in relation to the other partitions of the two or more partitions. Then, memory is allocated among one or more of the two or more partitions so that future values expected to be obtained for each of the two or more partitions after the implementation will be more evenly distributed among each of the two or more partitions than the current values are distributed among each of the two or more partitions.
In the memory tuning task, the tuner may first determine the relative memory pain rates for each partition to be tuned. Then the tuner allocates memory among these partitions so that future relative memory pain rates expected to be obtained for each of these partitions after the allocation will be more evenly distributed among each of the partitions than the current relative memory pain rates are distributed among each of the partitions.
This allocation of memory may itself involve several steps. First, the tuner may create a memory allocation plan that provides a suggested memory change for the partitions, where the plan, if implemented, would cause future relative memory pain rates expected to be obtained for each of the partitions after the implementation to be more evenly distributed among each of the partitions than the current relative memory pain rates are distributed among each of the partitions. Second, the tuner may, for each suggested memory change, check the change against one or more rules and modify the change to conform to any rules that are violated. Third, the tuner may, adjust the suggested memory changes to accommodate available memory. Finally, the tuner may, cause the suggested memory changes to be implemented.
The procedure of causing the suggested memory changes to be implemented may also include a procedure that prepares a partition for memory to be removed so as to minimize the negative impact on performance that the memory removal might cause. This procedure involves, first, for each memory pool eligible for user adjustment, determining the amount of memory that can be removed (e.g., as determined by system limits). Then, for each such pool, memory is caused to be removed from the pool in proportion to the amount of memory that can be removed from the pool compared to the total amount of memory that may be removed from all eligible pools.
For the P/I tuning task, the tuner first determines the current relative processor pain rate and the current relative interactive pain rate for each partition to be tuned. Then the tuner allocates processor power and interactive power among these partitions so that future relative processor and interactive pain rates expected to be obtained for each of the partitions after the allocation will be more evenly distributed among each of the partitions than the current relative processor and interactive pain rates are distributed among each of the partitions.
This allocation of processor power and interactive power may itself involve several steps. First, the tuner may create a resource allocation plan that provides a suggested processor power and/or interactive power change for the partitions to be tuned, where the plan, if implemented, would cause future relative processor power pain rates and future relative interactive power pain rates expected to be obtained for each of these partitions after the implementation to be more evenly distributed among each of the partitions than the current relative processor power pain rates and current relative interactive power pain rates are distributed among each of the partitions. Second, the tuner may, for each suggested processor power change and each suggested interactive power change, check the change against one or more rules and modify the change to conform to any rules that are violated. Third, the tuner may, for each of the partitions, insure that the combination of any processor power and/or interactive power changes suggested for the respective partition are valid. Fourth, the tuner may adjust one or more suggested processor power and/or suggested interactive power changes to accommodate the total processor power and the total interactive power available for allocation. The tuner may iteratively perform the second, third, and fourth steps until each of the suggested processor power and interactive power changes that have been adjusted to accommodate available processor and interactive power are valid and in conformance with the one or more rules. Then, the tuner may cause to be implemented the suggested processor power and suggested interactive power changes that have been adjusted to accommodate available processor and interactive power. Prior to causing these suggested changes to be implemented, the tuner may perform a procedure that attempts to distribute any processor power or interactive power or both that remains unallocated.